package com.ym.medical.domain.param;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ym.common.constant.BeanCovert;
import com.ym.medical.domain.entity.ConsultSummaryEntity;
import com.ym.medical.domain.entity.HuaweiReturnParamEntity;
import com.ym.medical.domain.entity.InquiryOrderEntity;
import com.ym.medical.domain.entity.PatientHealthRecordsEntity;
import com.ym.medical.enums.CounsellingRoomStateEnum;
import com.ym.medical.enums.UserSexEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

@Data
@ApiModel(value = "问诊订单和附件信息")
public class OrderAndFileParam extends BeanCovert<InquiryOrderEntity> {

    private Long id;

    /**
     * 用户ID
     */
    @ApiModelProperty("用户ID")
    private Long userId;

    /**
     * 定价实例ID
     */
    @ApiModelProperty("定价实例ID")
    private Long ruleId;

    /**
     * 问诊患者id
     */
    @ApiModelProperty("问诊患者id")
    private Long patientId;

    /**
     * 01找医生 02 自诊 03 快速问诊
     */
    @ApiModelProperty("01找医生 02 自诊 03 快速问诊")
    private String orderSource;

    /**
     * 病情描述
     */
    @ApiModelProperty("病情描述")
    private String illnessDesc;

    /**
     * 是否线下就诊
     */
    @ApiModelProperty("是否线下就诊")
    private String isTreatment;

    /**
     * 问诊人联系电话
     */
    @ApiModelProperty("问诊人联系电话")
    private String phoneNo;

    /**
     * 患病时长
     */
    @ApiModelProperty("患病时长")
    private String illnessDuration;

    /**
     * 过敏史
     */
    @ApiModelProperty("过敏史")
    private String allergyHistory;

    /**
     * 重大疾病,慢病例
     */
    @ApiModelProperty("重大疾病,慢病例")
    private String majorDiseases;

    /**
     * 订单编号
     */
    @ApiModelProperty("订单编号")
    private String ioNum;

    /**
     * 订单类型 01待接单 02已接单 03完成 04	取消 05待生效
     */
    @ApiModelProperty("订单类型 01待接单 02已接单 03完成 04	取消 05待生效")
    private String ioType;

    /**
     * 01 微信 02 支付宝 03 其它
     */
    @ApiModelProperty("01 微信 02 支付宝 03 其它")
    private String paymentWay;

    /**
     * 应付金额
     */
    @ApiModelProperty("应付金额")
    private Double payableAmount;

    /**
     * 实际支付金额
     */
    @ApiModelProperty("实际支付金额")
    private Double paymentPrice;

    /**
     * 01 待支付 02 已支付 03 退费申请中 04 已退费 05 订单异常 06 全科订单
     */
    @ApiModelProperty("01 待支付 02 已支付 03 退费申请中 04 已退费 05 订单异常 06 全科订单")
    private String paymentState;

    /**
     * 支付来源 (01-小程序 02-公众号)
     */
    @ApiModelProperty("支付来源 (01-小程序 02-公众号)")
    private String paySource;

    /**
     * 支付时间
     */
    @ApiModelProperty("支付时间")
    private Date paymentTime;

    /**
     * 预约时间的规则ID(目前仅视频问诊)
     */
    @ApiModelProperty("预约时间的规则ID(目前仅视频问诊)")
    private Long appointTimeRule;

    /**
     * null
     */
    @ApiModelProperty("null")
    private Date appointTime;

    /**
     * 01 待接单 02 已接单  03 完成 04 取消 05 待生效
     */
    @ApiModelProperty("01 待接单 02 已接单  03 完成 04 取消 05 待生效")
    private String ioState;

    /**
     * 优惠券主键
     */
    @ApiModelProperty("优惠券主键")
    private Long relId;

    /**
     * 支付备注
     */
    @ApiModelProperty("支付备注")
    private String payRemark;

    /**
     * 阅读数
     */
    @ApiModelProperty("阅读数")
    private Integer readNum;

    /**
     * 预付表主键
     */
    @ApiModelProperty("预付表主键")
    private Long prepaymentId;

    /**
     * 0 不公开  1 公开
     */
    @ApiModelProperty("0 不公开  1 公开")
    private String isPublic;

    /**
     * 结束时间
     */
    @ApiModelProperty("结束时间")
    private Date ioEndtime;

    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 付款账户
     */
    @ApiModelProperty("付款账户")
    private String payAcc;

    @ApiModelProperty("附件主键")
    @NotNull(message = "附件主键!")
    private String ids;

    @ApiModelProperty("电话时长")
    private Integer prDuration;

    @ApiModelProperty("患者姓名")
    private String name;

    @ApiModelProperty("医生姓名")
    private String realName;

    @ApiModelProperty("患者头像id")
    private String headUrl;

    @ApiModelProperty("患者性别")
    @JsonSerialize(converter = UserSexEnum.Covert.class)
    private String sex;

    @ApiModelProperty("患者年龄")
    private Integer userAge;

    @ApiModelProperty("中间号码")
    private String relationNum;

    @ApiModelProperty("医生电话")
    private String doctPhone;

    @ApiModelProperty("医生id")
    private Long doctId;

    @ApiModelProperty("可否拨打电话标志")
    private Boolean flag;

    @ApiModelProperty("可否拨打电话标志")
    private String dialStatus;

    @ApiModelProperty("评价标志")
    private Boolean evaluationFlag;

    @ApiModelProperty("咨询室id")
    private Long crId;

    @ApiModelProperty("咨询室状态05 已总结")
    @JsonSerialize(converter = CounsellingRoomStateEnum.Covert.class)
    private String courState;

    @ApiModelProperty("医生云信id")
    private String replyAccid;

    @ApiModelProperty("录音文件地址")
    private List<RecordAndTimeParam> recordUrl;

    /**
     * 性别值
     */
    @ApiModelProperty("性别值")
    private String sexName;

    @ApiModelProperty("拨打电话记录")
    private List<HuaweiReturnParamEntity> returnParams;

    @ApiModelProperty("健康档案")
    private PatientHealthRecordsEntity patientHealthRecords;

    @ApiModelProperty("咨询总结")
    private ConsultSummaryEntity consultSummary;

    @ApiModelProperty("答谢")
    private MindParam mind;

    @ApiModelProperty("评价")
    private PhoneOrderCommentRecordParam commentRecord;



}
